package com.lsa.skienna.challenge.econom;


//import org.jscience.mathematics.number.Real;

public class Main {
    /**
     * @param args
     * @throws Throwable 
     */
    public static void main(String[] args) throws Throwable {
//        BufferedReader br = new BufferedReader(new FileReader("data/econom/gold_prices_20140317.csv"));
//        Real.setExactPrecision(20);
//
//        String line = null;
//        int recNo = 0;
//        
//        int monthCount = 6;
//        Aggregator agg = new Aggregator(monthCount);
//        
//        while((line = br.readLine()) != null) {
//            if (recNo++ == 0) {
//                continue;
//            }
//            
//            final String[] parts = line.split(";");
//
//            String dateField = parts[0];
//            String[] dateParts = dateField.split("[.]");
//            
//            int month = Integer.parseInt(dateParts[1]);
//            int year = Integer.parseInt(dateParts[2]);
//            final String ttt = parts[1];
//            Real sum = Real.valueOf(ttt.replace(',', '.'));
//            agg.onNewData(year, month, sum);
//        }
//        agg.endPeriod();
//        
//        System.out.println("year;period;stddev");
//        
//        final List<PeriodDesc> periods = agg.periods;
//        for (PeriodDesc d : periods) {
//            System.out.println(d);
//        }
    }
    
//    private static class Aggregator {
//        final int monthCount;
//        
//        List<PeriodDesc> periods = new ArrayList<PeriodDesc>();
//        PeriodDesc currPeriod;
//        
//        public Aggregator(int monthCount) {
//            this.monthCount = monthCount;
//        }
//
//        public void onNewData(int year, int month, Real sum) {
//            if (currPeriod == null || isPeriodEnd(year, month)) {
//                endPeriod();
//                currPeriod = new PeriodDesc(year, month);
//            }
//            
//            currPeriod.expandPeriod(month, sum);
//        }
//
//        public void endPeriod() {
//            if (currPeriod != null) {
//                currPeriod.summarize();
//                periods.add(currPeriod);
//            }
//        }
//        
//        private boolean isPeriodEnd(int year, int month) {
//            return currPeriod.year != year || (month - currPeriod.fromMonth + 1) > monthCount;
//        }
//    }
//    
//    private static class PeriodDesc {
//        List<Real> samples = new ArrayList<Real>();
//
//        private Real disp;
//        
//        public PeriodDesc(int year, int month) {
//            this.year = year;
//            this.fromMonth = month;
//        }
//        
//        public void expandPeriod(int month, Real sum) {
//            toMonth = month;
//            this.sum = this.sum.plus(sum);
//            this.samples.add(sum);
//        }
//
//        public void summarize() {
//            int n = samples.size();
//            
//            Real mu = this.sum.divide(n);
//            Real disp = Real.ZERO;
//            
//            for (Real p : samples) {
//                Real diff = mu.plus(p.times(-1));
//                disp = disp.plus( diff.times(diff) );
//            }
//            
//            disp = disp.divide(n > 1 ? n - 1 : 1);
//            this.disp = disp.sqrt();
//        }
//
//        Real sum = Real.ZERO;
//        
//        int year;
//        int fromMonth;
//        int toMonth;
//
//        @Override
//        public String toString() {
//            return String.format("%s;%s - %s;%s", year, month(fromMonth), month(toMonth), (""+disp.doubleValue()).replace('.', ','));
//        }
//    }
//    
//    public static String month(int i){
//        return MONTH[i-1];
//    }
//    
//    private static final String[] MONTH = new String[]{"January",
//        "February",
//        "March",
//        "April",
//        "May",
//        "June",
//        "July",
//        "August",
//        "September",
//        "October",
//        "November",
//        "December"};
}
